using System;
using Server;
using Server.Items;

namespace Server.Spells.Necromancy
{
	public abstract class NecromancerSpell : Spell
	{
		public abstract double RequiredSkill { get; }
		public abstract int RequiredMana { get; }

		public override SkillName CastSkill { get { return SkillName.Death; } }
		public override SkillName DamageSkill { get { return SkillName.Death; } }

		//public override int CastDelayBase{ get{ return base.CastDelayBase; } } // Reference, 3

		public override bool ClearHandsOnCast { get { return false; } }

		public override double CastDelayFastScalar { get { return (Core.SE? base.CastDelayFastScalar : 0); } } // Necromancer spells are not affected by fast cast items, though they are by fast cast recovery

		public NecromancerSpell(Mobile caster, Item scroll, SpellInfo info)
			: base(caster, scroll, info)
		{
		}

		public override int ComputeKarmaAward()
		{
			//TODO: Verify this formula being that Necro spells don't HAVE a circle.

			//return -(70 + (10 * (int)Circle));

			return -(40 + (int)(10 * (CastDelayBase.TotalSeconds / CastDelaySecondsPerTick)));
		}

		public override void GetCastSkills(out double min, out double max)
		{
			min = RequiredSkill;
			max = RequiredSkill + 40.0;
		}

		public override bool ConsumeReagents()
		{
			if (base.ConsumeReagents())
				return true;

			if (ArcaneGem.ConsumeCharges(Caster, 1))
				return true;

			return false;
		}

		public override int GetMana()
		{
			return RequiredMana;
		}
	}
}